我的世界1.20及以上字体材质包修复[Java Edition] |
您所在的位置:网站首页 › 字体包 英文 › 我的世界1.20及以上字体材质包修复[Java Edition] |
在mc1.20版本之后,mc的字体资源包格式发生了变化, ,使得部分修改了字体的资源包失效 ,具体表现为字体包装上后,资源包不起作用 问题这里以“方正字体”材质举个例子 感谢@Surisen提供的资源包 1.20.1的效果图我们可以看到的是除了数字和英文外,所有的中文全部是原版文字 原因是在23w17a版本中,unifont不再由位图(bitmap)形式存储了而是以hex文件存储, 这一改动最终在1.20中实装,导致了修改图片的这种字体包形式失效 字体 加入了unihex字形提供器,用于读取Unifont HEX文件。 所有字形的高度均为16像素。 所有字形的宽度可为8、16、24、32像素。 每一行由两个十六进制数字组成,由:分隔。 第一个数字代表字符码点,需要有4、5或6位。 第二个数字为字形的比特流。 渲染时字形左右的空像素列会被移除。 可以通过size_overrides设置自定义字形宽度。 HEX格式包含了字体的位图字形。 解决方法既然原版不再提供对应的json文件,我们就得自己来构建对应的json文件来提供字体的索引, 我写了一小段python程序来帮助我生成这个json文本,python程序我会放在附录里,json由于实在过长就不放在这里了,大家可以到以下地址去下载 蓝奏云:https://fuyuan360.lanzouj.com/b01vp654d 密码:0000 逐步教程这里我们默认您已学会浏览器,文件管理器,解压,压缩等基本操作,并且会安装mc的资源包 1.到网站中下载default.zip解压获得default.json文件 网页截图2.解压字体资源包文件,这个文件一般存在于.minecraft\versions\版本名称\resourcepacks中,这里我已经解压好了 资源包文件夹打开 资源包名\assets\minecraft\font文件夹 font文件夹截图3.将第1步中解压得的default.json(不是压缩包)拖入文件夹内 font文件夹4,打开游戏,测试 更改后效果如果看上去还是没有效果,那么请到选项->语言中,把左下角的 “强制使用Unicode字体:开”调整为"强制使用Unicode字体:关"即可 语言设置界面附录这个是生成default.json的python程序,有兴趣的可以研究下 import json def chars(start_number: int) -> list: """生成bitmap格式字体的chars属性 Args: start_number (int): unifont的字体页码和对应Unicode的前2位 Returns: chars: 以16*16编排的Unicode列表 """ chars = [] list1 = [] # 一个用来存储0-255的16进制编码 start_number = str(start_number) for number in range(0, 256): end_number = hex(number)[2:].zfill(2) # 对16进制数字切片去除0x前缀,不足两位的前面补充数字0 number = f"\\u{start_number}{end_number}" list1.append(number) for i in range(0, len(list1), 16): l_chr = ''.join(list1[i:i+16]) chars.append(l_chr) return chars data_list = [] for i in range(78, 160): # 78是4e,160是9f,\u4e00到u9fff是中日韩越统一表意文字的Unicode编码范围 hex_i = hex(i)[2:] default_json = {"providers": ""} data = { "type": "bitmap", "ascent": 7, "file": "value", "chars": "value" } # https://wiki.biligame.com/mc/资源包#字体 file_path = f"minecraft:font/unicode_page_{hex_i}.png" data['file'] = file_path data["chars"] = chars(hex_i) data_list.append(data) default_json["providers"] = data_list with open("./default.json", "w") as f: json.dump(default_json, f) # 写入json with open("./default.json", "r") as f: # 以只读形式打开,将json以字符串形式读取,替换其中的"\\"为"\" default_json_text = f.read() write_text = default_json_text.replace("\\\\", "\\") f.close() with open("./default.json", "w") as f: # 将替换后的文本再次写入文件中 f.write(write_text) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |